package com.zhz.leetcode;

import java.util.Arrays;

/**
 * 27、移除元素
 * https://leetcode-cn.com/problems/remove-element/
 */
public class RemoveElement27 {

    public static void main(String[] args) {
        RemoveElement27 removeElement = new RemoveElement27();
        //输入: nums = [3,2,2,3], val = 3
        //输出: 2, nums = [2,2]
        int[] nums = {3, 2, 2, 3};
        int val = 3;
        int length = removeElement.removeElement(nums, val);
        System.out.println("length: " + length);
    }

    /**
     * 由于java数组没法删除元素，长度也无法改变。
     * <p>
     * 因此将其非val的数据删除，并将非val的数据往前移一格
     */
    public int removeElement(int[] nums, int val) {
        int length = nums.length;
        int index = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != val) {
                nums[index] = nums[i];
                if (index != i) {
                    nums[i] = 0;
                }
                index++;
            } else {
                length--;
                nums[i] = 0;
            }
        }
        System.out.println(Arrays.toString(nums));
        return length;
    }

}
